#ifndef WORLD_H
#define WORLD_H

#include "Map.h"
#include "TextureManager.h"
#include "ShapeManager.h"
#include "Camera.h"
#include "Map.h"

class World
{
public:
    World();
    virtual ~World();

	Map* GetMap();
	TextureManager* GetTextureManager();
	ShapeManager* GetShapeManager();
	Camera* GetCamera();

	void SetShape(unsigned int cellx, unsigned int celly, const Shape& shape);
	void RemoveShape(unsigned int cellx, unsigned int celly);


protected:
	virtual Camera* NewCamera();
	virtual TextureManager* NewTextureManager();
	virtual ShapeManager* NewShapeManager();
	virtual Map* NewMap();

private:
	TextureManager* textureManager;
	ShapeManager* shapeManager;
	Camera* camera;
	Map* map;
};

#endif // WORLD_H
